Add bashcomp for --example
authorgentoo90 <gentoo90@gmail.com>
Sun, 19 Apr 2015 14:36:29 +0000 (17:36 +0300)
committergentoo90 <gentoo90@gmail.com>
Sun, 19 Apr 2015 14:36:29 +0000 (17:36 +0300)
and restrict --manifest-path to propose only *.toml files

src/etc/cargo.bashcomp.sh

index e6f0086aa6f96972f5f6eb9fd832a66423a2ecff..83f19591ee3b4b182b33c77f3008bc2e2979cab3 100644 (file)
@@ -43,8 +43,15 @@ _cargo()
                else
                        COMPREPLY=( $( compgen -W "$(cargo --list | tail -n +2)" -- "$cur" ) )
                fi
-       elif [[ $cword -gt 2 && "$prev" = "$opt_mani" ]]; then
-               _filedir
+       elif [[ $cword -gt 2 ]]; then
+               case "${prev}" in
+                       "$opt_mani")
+                               _filedir toml
+                               ;;
+                       --example)
+                               COMPREPLY=( $( compgen -W "$(_get_examples)" -- "$cur" ) )
+                               ;;
+               esac
        elif [[ "$cur" == -* ]]; then
                COMPREPLY=( $( compgen -W "${opts[$cmd]}" -- "$cur" ) )
        fi
@@ -56,4 +63,16 @@ _cargo()
 } &&
 complete -o nospace -F _cargo cargo
 
+_locate_manifest(){
+       local manifest=`cargo locate-project 2>/dev/null`
+       # regexp-replace manifest '\{"root":"|"\}' ''
+       echo ${manifest:9:-2}
+}
+
+_get_examples(){
+       local files=($(dirname $(_locate_manifest))/examples/*.rs)
+       local names=("${files[@]##*/}")
+       local names=("${names[@]%.*}")
+       echo "${names[@]}"
+}
 # vim:ft=sh